# {{ ansible_managed }}
# 备份监控服务单元文件
# 用于定期监控备份系统的健康状态和性能

[Unit]
# 服务描述和依赖关系配置
Description=Backup Monitor Service                    # 服务描述：备份监控服务
After=network.target                                 # 在网络服务启动后启动
Wants=network.target                                 # 希望网络服务可用（软依赖）

[Service]
# 服务运行配置
Type=oneshot                                         # 一次性执行类型，执行完成后退出
User={{ backup_user | default('root') }}            # 运行用户，默认为root
Group={{ backup_group | default('root') }}          # 运行用户组，默认为root
ExecStart={{ backup_scripts_dir }}/backup_monitor.sh # 执行的监控脚本路径
StandardOutput=journal                               # 标准输出重定向到systemd日志
StandardError=journal                                # 标准错误重定向到systemd日志
SyslogIdentifier=backup-monitor                      # 系统日志标识符

# 安全设置 - 限制服务权限以提高系统安全性
NoNewPrivileges=true                                 # 禁止获取新的特权
PrivateTmp=true                                      # 使用私有临时目录
ProtectSystem=strict                                 # 严格保护系统目录（只读）
ProtectHome=true                                     # 保护用户家目录
ReadWritePaths={{ backup_base_dir }} {{ backup_log_dir }}  # 允许读写的路径（备份和日志目录）
ProtectKernelTunables=true                           # 保护内核参数不被修改
ProtectKernelModules=true                            # 保护内核模块不被加载
ProtectControlGroups=true                            # 保护控制组不被修改
RestrictRealtime=true                                # 限制实时调度
RestrictSUIDSGID=true                                # 限制SUID/SGID程序执行
LockPersonality=true                                 # 锁定personality系统调用
MemoryDenyWriteExecute=true                          # 禁止内存写入后执行
RestrictNamespaces=true                              # 限制命名空间使用
SystemCallFilter=@system-service                     # 系统调用过滤器（仅允许系统服务相关调用）
SystemCallErrorNumber=EPERM                          # 被拒绝的系统调用返回权限错误

# 资源限制 - 防止服务消耗过多系统资源
CPUQuota=50%                                         # CPU使用限制为50%
MemoryLimit=256M                                     # 内存使用限制为256MB
TasksMax=10                                          # 最大任务数限制为10

[Install]
# 安装配置
WantedBy=multi-user.target                          # 在多用户模式下启用此服务